package com.klm.easymq.service;

import com.klm.easymq.config.EasyMqProperties;

/**
 * Easy-MQ 核心服务接口
 * 提供统一的消息发送和接收功能
 */
public interface EasyMqService {
    
    /**
     * 发送同步消息
     * @param topic 主题
     * @param message 消息对象
     * @return 发送结果
     */
    boolean sendSync(String topic, Object message);
    
    /**
     * 发送同步消息
     * @param topic 主题
     * @param message 消息对象
     * @param tag 消息标签
     * @param messageKey 消息键
     * @return 发送结果
     */
    boolean sendSync(String topic, Object message, String tag, String messageKey);
    
    /**
     * 发送异步消息
     * @param topic 主题
     * @param message 消息对象
     */
    void sendAsync(String topic, Object message);
    
    /**
     * 发送异步消息
     * @param topic 主题
     * @param message 消息对象
     * @param tag 消息标签
     * @param messageKey 消息键
     */
    void sendAsync(String topic, Object message, String tag, String messageKey);
    
    /**
     * 发送单向消息
     * @param topic 主题
     * @param message 消息对象
     * @param tag 消息标签
     * @param messageKey 消息键
     */
    void sendOneway(String topic, Object message, String tag, String messageKey);
    
    /**
     * 发送延迟消息
     * @param topic 主题
     * @param message 消息对象
     * @param delayLevel 延迟级别
     * @return 发送结果
     */
    boolean sendDelay(String topic, Object message, int delayLevel);
    
    /**
     * 发送顺序消息
     * @param topic 主题
     * @param message 消息对象
     * @param hashKey 用于选择队列的key
     * @return 发送结果
     */
    boolean sendOrdered(String topic, Object message, String hashKey);
    
    /**
     * 获取配置属性
     * @return 配置属性
     */
    EasyMqProperties getProperties();
    
    /**
     * 健康检查
     * @return 健康状态
     */
    boolean isHealthy();
} 